package linklist;

import queue.Queue;

// 使用带有虚拟头结点的链表实现队列, 无论在链表头还是链表尾进行入队或者出队操作, 总有一个的时间复杂度为O(n)
public class LinkedList2Queue<E> implements Queue<E> {

    private LinkedList2<E> list;

    public LinkedList2Queue() {
        list = new LinkedList2<>();
    }

    @Override
    public int getSize() {
        return list.getSize();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public void enqueue(E e) {
        list.addFirst(e);
    }

    @Override
    public E dequeue() {
        return list.removeLast();
    }

    @Override
    public E getFront() {
        return list.getFirst();
    }
}
